@外部依赖库("../../安卓基本库/依赖库/androidx/core-1.3.0.aar")
@外部Java文件("../依赖库/NListenerService.java")
@导入Java("com.service.NotificationListenerService.Meng.NListenerService")
@导入Java("android.provider.Settings")
@导入Java("android.content.pm.PackageManager")
@导入Java("android.content.ComponentName")
@附加清单([[<service android:name="com.service.NotificationListenerService.Meng.NListenerService" 
	android:label="通知监听服务"
	android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE">
	<intent-filter>
	<action android:name="android.service.notification.NotificationListenerService"/>
	</intent-filter>
</service>]])
类 通知监听器 : 窗口组件

	@code
	NListenerService Nlf;
	
	public #<通知监听器>(android.content.Context c){
		super(c);
		Nlf.onListener =  new NListenerService.OnListener(){
			public void onCreate(){
				#启动成功();
			}
        	public void onPosted(#<@通知对象> sbn){
				#收到通知(sbn);
			}
        	public void onRemoved(#<@通知对象> sbn){
				#通知移除(sbn);
			}
		};
		//if(#是否有通知管理权限()) #启动();
	}
	@end
	
	方法 启动()
		重启服务()
	结束 方法

	方法 获取全部通知() 为 通知对象[]
		变量 通知组 为 通知对象[0]
		code #通知组 = Nlf.getActiveNotifications();
		返回 通知组
	结束 方法

	方法 移除通知(应用包名 为 文本, Tag 为 文本, ID 为 整数)
		code Nlf.cancelNotification(#应用包名, #Tag, #ID);  
	结束 方法

	方法 移除全部通知()
		code Nlf.cancelAllNotifications();
	结束 方法

	方法 打开设置通知使用权页面() 为 逻辑型
		@code 
		try {
		#<@启动信息> intent;
		if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP_MR1)
		intent = new #<@启动信息>(Settings.ACTION_NOTIFICATION_LISTENER_SETTINGS);
		else intent = new #<@启动信息>("android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS");
		#取安卓环境().startActivity(intent);
		return true;
		} catch (#<@异常> e) {e.printStackTrace();return false;}
		@end
	结束 方法

	方法 重启服务()
		@code 
		if(!#是否有通知管理权限()) return;
		PackageManager pm = #取安卓环境().getPackageManager();
		pm.setComponentEnabledSetting(new ComponentName(#取安卓环境(), NListenerService .class), 
		PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);

		pm.setComponentEnabledSetting(new ComponentName(#取安卓环境(), NListenerService .class), 
		PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
		@end
	结束 方法

	方法 是否有通知管理权限() 为 逻辑型
		@code 
		java.util.Set<String> packageNames = androidx.core.app.NotificationManagerCompat.getEnabledListenerPackages(#取安卓环境());
		if (packageNames.contains(#取安卓环境().getPackageName())) {
		return true;
		}
		String f = Settings.Secure.getString(#取安卓环境().getContentResolver(),"enabled_notification_listeners");
		if(f != null) return f.contains(#取安卓环境().getPackageName());
		@end
		返回 假
	结束 方法


	//监听服务启动成功
	定义事件 启动成功()

	//增加一条通知时回调
	定义事件 收到通知(通知 为 通知对象)

	//通知被移除时回调
	定义事件 通知移除(通知 为 通知对象)

结束 类

@指代类("android.service.notification.StatusBarNotification")
@导入Java("android.app.Notification")
类 通知对象

	属性读 ID() 为 整数
		code return #this.getId();
	结束 属性

	属性读 应用包名() 为 文本
		code return #this.getPackageName();
	结束 属性

	属性读 标题() 为 文本
		code return #this.getNotification().extras.getString(Notification.EXTRA_TITLE) == null ?"":#this.getNotification().extras.getString(Notification.EXTRA_TITLE);
	结束 属性

	属性读 内容() 为 文本
		code return #this.getNotification().extras.getString(Notification.EXTRA_TEXT) == null ?"":#this.getNotification().extras.getString(Notification.EXTRA_TEXT);
	结束 属性

	属性读 子内容() 为 文本
		code return #this.getNotification().extras.getString(Notification.EXTRA_SUB_TEXT) == null ?"":#this.getNotification().extras.getString(Notification.EXTRA_SUB_TEXT);
	结束 属性
	
	属性读 时间() 为 长整数
		code return #this.getPostTime();
	结束 属性

	属性读 Tag() 为 文本
		code return #this.getTag();
	结束 属性

	属性读 可被清除() 为 逻辑型
		code return #this.isClearable();
	结束 属性

	属性读 为常驻运行通知() 为 逻辑型
		code return #this.isOngoing();
	结束 属性

	/*属性读 自定义内容() 为 文本
		code return #this.getContent();
	结束 属性*/

结束 类